﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using QuanCafe.QuanCafe_BUS_WebService;

namespace QuanCafe
{
    public partial class frmBanUong : Form
    {

        #region Khai báo biến

        private int _donghientai;

        QuanCafe_BUS_WebServiceSoapClient ws = new QuanCafe_BUS_WebServiceSoapClient();

        #endregion

        #region Khởi tạo delegate

        #endregion

        #region Xử lý ban đầu


        public frmBanUong()
        {
            InitializeComponent();
            // sử dụng lớp DataGridViewColumnSelector
            DataGridViewColumnSelector cs = new DataGridViewColumnSelector(dgvDanhSachBanUong);
            cs.MaxHeight = 200;
            cs.Width = 200;
        }

        private void frmBanUong_Load(object sender, EventArgs e)
        {
            dgvDanhSachBanUong.DataSource = ws.BU_LayDanhSachBanUong();
            binding();
            // ẩn 2 cái radiobutton đi
            rbtCon.Visible = false;
            rbtHet.Visible = false;
            btnOK.Visible = false;
            btnDongY.Visible = false;
            btnHuyBo.Visible = false;
            cbbCapNhat.Checked = false;
            cbbSearch.SelectedIndex = 0;
        }
        private void dgvDanhSachBanUong_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            if (dgvDanhSachBanUong.CurrentRow != null)
            {
                if (dgvDanhSachBanUong.CurrentRow.Index != _donghientai)
                {
                    _donghientai = dgvDanhSachBanUong.CurrentRow.Index;
                    // binding
                    binding();
                }
            }
        }


        #endregion


        #region Xử lý chính

        // viết hàm binding
        public void binding()
        {
            txtMaBan.DataBindings.Clear();
            txtMaBan.DataBindings.Add("Text",dgvDanhSachBanUong.DataSource,"Masoban");
            txtTinhTrang.DataBindings.Clear();
            txtTinhTrang.DataBindings.Add("Text",dgvDanhSachBanUong.DataSource,"Tinhtrang");
        }

        private void btnXemThucUong_Click(object sender, EventArgs e)
        {
            // load danh sách lên
            dgvDanhSachBanUong.DataSource = ws.BU_LayDanhSachBanUong();
            binding();
            // ẩn 2 cái radiobutton đi
            rbtCon.Visible = false;
            rbtHet.Visible = false;
            btnOK.Visible = false;
            btnDongY.Visible = false;
            btnHuyBo.Visible = false;
            cbbCapNhat.Visible = true;
        }


        // xử lý việc thêm bàn uống
        private void btnThemThucUong_Click(object sender, EventArgs e)
        {
            // chỉnh lại thuộc tính
            txtMaBan.ReadOnly = false;
            // ẩn mấy cái kia đi
            rbtCon.Visible = false;
            rbtHet.Visible = false;
            cbbCapNhat.Visible = false;
            btnOK.Visible = false;
            btnDongY.Visible = true;
            btnHuyBo.Visible = true;
        }


        // thêm
        private void btnDongY_Click(object sender, EventArgs e)
        {
            try
            {
                if (txtMaBan.Text.Length != 0)
                {
                    bool flag = ws.BU_ThemBanUong(txtMaBan.Text);
                    if (flag == true)
                    {
                        MessageBox.Show("Thêm bàn uống thành công!", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        // load lại
                        // load danh sách lên
                        dgvDanhSachBanUong.DataSource = ws.BU_LayDanhSachBanUong();
                        binding();

                    }
                    else
                    {
                        // xuất ra thông báo
                        MessageBox.Show("Thêm bàn uống thất bại!", "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }

                    // xử lý tiếp
                    txtMaBan.ReadOnly = true;
                    txtTinhTrang.ReadOnly = true;
                    btnDongY.Visible = false;
                    btnHuyBo.Visible = false;
                    btnOK.Visible = false;
                    rbtCon.Visible = false;
                    rbtHet.Visible = false;
                    cbbCapNhat.Visible = true;

                }
                else
                {
                    // xuất ra thông báo
                    MessageBox.Show("Bạn chưa nhập vào mã bàn!", "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            catch (Exception x)
            {
                MessageBox.Show("Đã có lỗi xảy ra: " + x);
            }
        }

        // xử lý việc thay đổi
        private void cbbCapNhat_CheckedChanged(object sender, EventArgs e)
        {
            if (cbbCapNhat.Checked == true)
            {
                // hiện thông tin lên
                rbtCon.Visible = true;
                rbtHet.Visible = true;
                btnOK.Visible = true;
                // kiểm tra
                if (dgvDanhSachBanUong.CurrentRow.Cells[2].Value.ToString() == 0.ToString())
                {
                    rbtCon.Checked = true;
                    rbtHet.Checked = false;
                }
                else
                {
                    rbtCon.Checked = false;
                    rbtHet.Checked = true;
                }
            }
            else
            {
                rbtCon.Visible = false;
                rbtHet.Visible = false;
                btnOK.Visible = false;
            }
        }

        private void btnHuyBo_Click(object sender, EventArgs e)
        {
            // xử lý tiếp
            txtMaBan.ReadOnly = true;
            txtTinhTrang.ReadOnly = true;
            btnDongY.Visible = false;
            btnHuyBo.Visible = false;
            btnOK.Visible = false;
            rbtCon.Visible = false;
            rbtHet.Visible = false;
            cbbCapNhat.Visible = true;
        }


        // xử lý việc cập nhật
        private void btnOK_Click(object sender, EventArgs e)
        {
            bool flag;
            if (rbtCon.Checked == true)
            {
                flag = ws.BU_CapNhatTinhTrang(dgvDanhSachBanUong.CurrentRow.Cells[1].Value.ToString(), 0);
            }
            else
            {
                flag = ws.BU_CapNhatTinhTrang(dgvDanhSachBanUong.CurrentRow.Cells[1].Value.ToString(), 1);
            }
            if (flag == true)
            {
                // xuất thông báo
                MessageBox.Show("Cập nhật thành công!", "information", MessageBoxButtons.OK, MessageBoxIcon.Information);
                // load lại
                // load danh sách lên
                dgvDanhSachBanUong.DataSource = ws.BU_LayDanhSachBanUong();
                binding();



            }
            else
            {
                MessageBox.Show("Cập nhật thất bại!", "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            // ẩn đi
            rbtCon.Visible = false;
            rbtHet.Visible = false;
            btnOK.Visible = false;
            cbbCapNhat.Checked = false;
        }


        // thực hiện việc xóa bàn uống
        private void btnXoaThucUong_Click(object sender, EventArgs e)
        {
            try
            {
                DialogResult kq = MessageBox.Show("Bạn có thật sự muốn xóa bàn uống này?", "Question!", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
                if (kq == DialogResult.OK)
                {
                    // thực hiện việc xóa
                    bool flag = ws.BU_XoaBanUong(dgvDanhSachBanUong.CurrentRow.Cells[1].Value.ToString());
                    if (flag == true)
                    {
                        MessageBox.Show("Xóa thành công!", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        // load danh sách lên
                        dgvDanhSachBanUong.DataSource = ws.BU_LayDanhSachBanUong();
                        binding();
                    }
                    else
                    {
                        MessageBox.Show("Xóa Thất Bại!", "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
                btnDongY.Visible = false;
                btnHuyBo.Visible = false;
                btnOK.Visible = false;
                rbtCon.Visible = false;
                rbtHet.Visible = false;
                cbbCapNhat.Checked = false;
            }
            catch
            {

            }

        }


        private void dgvDanhSachBanUong_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Up || e.KeyCode == Keys.Down)
            {
                _donghientai = dgvDanhSachBanUong.CurrentRow.Index;
                binding();
            }
        }


        #endregion

        private void btnSearch_Click(object sender, EventArgs e)
        {
            if (txtTuKhoa.Text.Length != 0)
            {
                if (cbbSearch.SelectedIndex == 0)
                {
                    dgvDanhSachBanUong.DataSource = ws.BU_TraBanUongTheoMa(txtTuKhoa.Text);
                    binding();
                }
                else
                { 
                    int tinhtrang = int.Parse(txtTuKhoa.Text.ToString());
                    dgvDanhSachBanUong.DataSource = ws.BU_TraBanUongTheoTinhTrang(tinhtrang);
                    binding();
                }
            }
            btnDongY.Visible = false;
            btnHuyBo.Visible = false;
            btnOK.Visible = false;
            rbtCon.Visible = false;
            rbtHet.Visible = false;
            cbbCapNhat.Checked = false;
        }

        private void ttpInfo_Draw(object sender, DrawToolTipEventArgs e)
        {
            e.DrawBackground();
            e.DrawText();
        }

        private void txtTuKhoa_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                btnSearch_Click(sender,e);
            }
        }

        
        #region Xử lý với thread

        #endregion




        

        

        
    }
}
